package com.quartz.listeners;

import lombok.extern.slf4j.Slf4j;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.quartz.JobListener;

/**
 * @author hewei
 * @description 希望在执行JobDetail时得到通知的类实现的接口。通常，使用调度器的应用程序不会使用这种机制
 * @date 9:47 2021/5/12
 * @param
 * @return
 **/
@Slf4j
public class QuartzJobListeners implements JobListener {

    /**
     * JobListener的名称
     * @return
     */
    @Override
    public String getName() {
        return "quartzJobListeners";
    }

    /**
     当要执行JobDetail(已发生关联的触发器)时，由调度程序调用。
     *
     *如果作业的执行被TriggerListener否决，则不会调用此方法。
     * @param context
     */
    @Override
    public void jobToBeExecuted(JobExecutionContext context) {
        log.info("即将执行");
    }

    /**
     当JobDetail即将执行(发生了关联的触发器)，但是TriggerListener否决了它的执行时，调度程序调用它
     * @param context
     */
    @Override
    public void jobExecutionVetoed(JobExecutionContext context) {
        log.info("即将静止");
    }

    /**
     在执行JobDetail之后由调度程序调用，并调用了关联触发器的Trigger (xx)方法。
     * @param context
     * @param jobException
     */
    @Override
    public void jobWasExecuted(JobExecutionContext context, JobExecutionException jobException) {

        log.info("执行完毕");
    }
}
